package com.yonyou.cyxdms.basedata.service.service.basedata;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yonyou.cyx.function.exception.ServiceBizException;
import com.yonyou.cyx.function.utils.common.StringUtils;
import com.yonyou.cyxdms.basedata.service.constant.BasedataCommonConstants;
import com.yonyou.cyxdms.basedata.service.dto.systemparam.GeneralSystemParamsDTO;
import com.yonyou.cyxdms.basedata.service.entity.basedata.SystemParamPO;
import com.yonyou.cyxdms.basedata.service.repository.basedata.SystemParamMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 基础参数设置
 * 
 * @author Dengqiang
 * @date 2017年5月24日
 */
@Service
public class BasicComServiceImpl implements BasicComService {

    Logger logger = LoggerFactory.getLogger(BasicComServiceImpl.class);

    @Autowired
    SystemParamMapper systemParamMapper;

    /**
     * 查询基础参数信息
     *
     * @param queryParam
     * @return java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>>
     * @author dengqiang
     * @since 2019/8/6
     */
    @Override
    public Map<String, Map<String, Object>> queryBasicParameters(Map<String, String> queryParam) {
       List<Map<String,Object>> list =  systemParamMapper.queryBasicParameters();
        Map<String, Map<String, Object>> basicresult = new HashMap<>();
        for (Map<String,Object> map : list){
            basicresult.put(map.get("PARAM_CODE").toString(),map);
        }
        return basicresult;
    }

    /**
     * 新增 - 基础参数
     * @param generalSystemParamsDTO
     * @author：chenzb
     * @since：2019-11-06
     */
    @Override
    public void addGeneralSystemParam(GeneralSystemParamsDTO generalSystemParamsDTO) {
        logger.debug("baseDate---开始新增系统基础参数generalSystemParamsDTO:{}",generalSystemParamsDTO);
        if (generalSystemParamsDTO == null){
            throw new ServiceBizException("对象参数的不可为空！");
        }
        // 根据appId和owner查
        LambdaQueryWrapper<SystemParamPO> query = new QueryWrapper<SystemParamPO>().lambda();
        query.eq(SystemParamPO::getAppId, generalSystemParamsDTO.getAppId());
        query.eq(SystemParamPO::getOwnerCode, generalSystemParamsDTO.getOwnerCode());
        query.eq(SystemParamPO::getCompanyCode, generalSystemParamsDTO.getCompanyCode());
        query.eq(SystemParamPO::getParamCode, BasedataCommonConstants.SEND_MSG_PARAM_CODE);
        SystemParamPO oldSystemParamPo = systemParamMapper.selectOne(query);
        if (oldSystemParamPo == null &&  !StringUtils.isBlank(generalSystemParamsDTO.getAppId())){
            SystemParamPO systemParamPo = new SystemParamPO();
            BeanUtils.copyProperties(generalSystemParamsDTO,systemParamPo);
            // 设置默认参数
            systemParamPo.setParamCode(BasedataCommonConstants.SEND_MSG_PARAM_CODE);
            systemParamPo.setParamName("是否发送消息到售后");
            systemParamPo.setParamType(1021);
            systemParamPo.setStatus(10011001);
            systemParamPo.setParamValue("10131002");
            systemParamPo.setRemark("是否发送消息到售后(品牌车系车型配置颜色)");
            systemParamPo.setIsDeleted(0);
            // 新增
            systemParamMapper.insert(systemParamPo);
        }
    }

}
